Notifications
Clear all

eliminar zeros da coluna K

29 Posts
5 Usuários
0 Reactions
3,738 Visualizações
(@joanas)
Posts: 0
New Member
Topic starter
 

Bom dia,

eu tenho este código para eliminar zeros da coluna K:K
nunca sei o fim da coluna, mas tenho sempre cerca de 18000 registos.
Ao usar o código, não me elimina os zeros todos. Por exemplo, se tiver 36 zeros, ele elimina 19, e se correr a macro outra vez é que elimina o resto dos zeros.. podem ajudar?

Sheets("Book").Select
Range("K9:K" & linha).Select
For Each cell In ActiveSheet.UsedRange
If cell.Value2 = "0" Then cell.EntireRow.Delete
Next cell

Obrigada

 
Postado : 04/02/2015 3:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Joana, seu anexo não possui valores 0 na coluna K...

 
Postado : 05/02/2015 11:28 am
(@edcronos)
Posts: 1006
Noble Member
 

Nem deu tempo de eu ver o anexo
então nem posso palpitar
Fernando, o certo seria ter uma proibição no servidor para arquivos que não sejam zip ou rar tipo tem ou tinha no forum do baboom

ou pelo menos uma informação a respeito das regras
na Aba de Adicionar Anexos

sei que as regras são básicas, mas muitas vezes as pessoas no intuito de resolvem seus problemas ou na tentativa de ajudar acabam se esquecendo de lerem as regras ou simplesmente esquecem.
bem eu nem sei se as regras valem tbm para imagens mas por via das duvidas:
um informativo nessa aba ia bem para lembrar a todos dessa regra

 
Postado : 05/02/2015 1:28 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Ed,

Não consegui ver a imagem, mas...

viewtopic.php?f=9&p=74814#p74814

 
Postado : 05/02/2015 1:34 pm
(@edcronos)
Posts: 1006
Noble Member
 

nem sabia de tal discussão, "mas tbm não sou moderador"

eu normalmente compacto meus arquivos, mas dependendo da ocasião posso esquecer de fazer isso ou simplesmente mandar o arquivo não compactado por erro.
não havendo esse filtro no proprio servidor, seria interessante pelo menos esse Aviso na parte onde se faz o upload do arquivo

 
Postado : 05/02/2015 2:06 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pessoal, quanto às regras do forum, se quiserem discutí-las, favor abrirem um tópico especificamente sobre isso, assim náo ficamos poluindo o o tópico da Joana.

Eu estou fazendo valer a regra. O conteúdo das páginas não sou eu quem decide, portanto, com um tópico solicitando cddrtas alterações, podemos entregar para o dono do forum, o Eron, e assim ele ver que existe demanda ou solicitações e analisr a viabilidade de quaisquer mudanças...

Peço desculpas por ser até inconveniente quando compacto ou excluo arquivos.
Nas regras não fala nada específico sobre imagens, e elas podem ser exibidas na resposta.
Eu só mexo com XLSX ou XLSM ou XLS... imagens eu normalmente não mexo, ou se mexo, é para diminuí-las caso estejam desconfigurando a exibição da página.

Percebam que cada moderador age de um jeito, mas sempre focando em fazer valer as regras do forum.

Enfim, por favor vamos ao que interessa, assim que a Joana subir o arquivo compactado, continuamos no tópico dela com o assunto dela.

 
Postado : 05/02/2015 2:41 pm
(@edcronos)
Posts: 1006
Noble Member
 

fernando até a joana postar o arquivo dela, seria interessante apagar as postagem a respeito das regras já que já tem um topico aberto sobre isso
viewtopic.php?f=9&p=74814#p74814

isso limparia o topico delas das coisas que não interessam. "ate esse comentario aqui :P "

 
Postado : 05/02/2015 2:58 pm
(@joanas)
Posts: 0
New Member
Topic starter
 

Está aqui o ficheiro. sorryyyyy, foi distração : eu zipei mas enviei o errado..

 
Postado : 06/02/2015 3:42 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Mas vc tentou o código que eu postei?

(Eu tinha visto o anexo antes do Fernando apagar)

 
Postado : 06/02/2015 5:29 am
(@joanas)
Posts: 0
New Member
Topic starter
 

sim eu tentei. mas não apaga os zeros todos de uma vez. se tiver uns 35 zeros.. só apaga 19.. por exemplo

 
Postado : 06/02/2015 6:35 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Eu testei e apagou todos.

Vc usou o código que eu postei, o do Wagner, ou do Fernando?

Bem, não consigo ir além, porque não vi problema no código que te enviei.

 
Postado : 06/02/2015 6:41 am
(@joanas)
Posts: 0
New Member
Topic starter
 

sim eu testei os três. e continuam sempre alguns zeros a aparecer

 
Postado : 06/02/2015 9:09 am
(@edcronos)
Posts: 1006
Noble Member
 

eu não sei se o excel faz diferenciação de 0 numero e 0 texto
mas tente usar a macro GTsalisk
mudando essa linha
If Cells(i, "K").Value2 = 0 Then

por essa
If Cells(i, "K").Value2 = 0 Or Cells(i, "K").Value2 = "0" Then

 
Postado : 06/02/2015 9:45 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vou começar pelo começo.

1) Verifiquei com teclando Ctrl+End que seu arquivo de 5,3MB enxergava cerca de 65mil linhas. Já conhecendo o problema, fui até a ultima realmente preenchida, em torno da linha 18mil, e selecionei todas as linhas abaixo e as excluí. Ao salvar, seu novo arquivo ficou com 2,4MB.

2) Verifiquei que a extensão do seu arquivo é XLS, que é do Excel antigo (2003) para trás.. Isso faz o arquivo ser naturalmente enorme. As extensões XLSX e XLSM são por natureza compactadas, então eu salvei como XLSM (pq tem macro) e o tamanho caiu de 2,4MB para 1,2MB.

3) Agora fui mexer no seu código, aplicando uma ideia completamente nova, aproveitando de matrizes para acumular os intervalos a serem excluídos, e excluí-los somente ao final do processo, todos de uma vez. Acredito inclusive que esse approach pode melhorar o desempenho.

4) Testei aqui e funcionou perfeitamente. Dá uma olhada.

5) Este é o código:

Option Explicit

'Fernando Fernandes
'fernando.fernandes@outlook.com.br
Public Sub EliminarZeros()
Dim Planilha        As Excel.Worksheet
Dim rngApagar       As Excel.Range
Dim arrColunaK      As Variant
Dim cnt             As Long
Dim UltimaLinha     As Long
    
    Set Planilha = Worksheets("Book")
    With Planilha
        If .AutoFilterMode Then .AutoFilter.ShowAllData
        UltimaLinha = .Cells(.Rows.Count, 11).End(xlUp).Row
        arrColunaK = .Range("K1:K" & UltimaLinha).Value
        
        'acumulando todas as linhas com 0 num único range
        For cnt = 9 To UBound(arrColunaK, 1)
            If VBA.IsNumeric(arrColunaK(cnt, 1)) Then arrColunaK(cnt, 1) = arrColunaK(cnt, 1) * 1
            If arrColunaK(cnt, 1) = 0 Then
                If rngApagar Is Nothing Then
                    Set rngApagar = .Rows(cnt)
                Else
                    Set rngApagar = Application.Union(rngApagar, .Rows(cnt))
                End If
            End If
        Next cnt
        
        'se houve linhas com zero, essas linhas serão apagadas aqui, de uma só vez.
        If Not rngApagar Is Nothing Then
            rngApagar.EntireRow.Delete Shift:=xlUp
        End If
        
    End With
    
    'limpando a memória
    Set rngApagar = Nothing
    Set Planilha = Nothing
End Sub

6) Este é o anexo, compactado, ainda com os zeros, para você testar.

Qquer coisa dá um grito, Joana!

FF

 
Postado : 06/02/2015 10:43 am
(@joanas)
Posts: 0
New Member
Topic starter
 

Resultoooooooou :D obrigada a todos pela ajuda :) valeu :D

 
Postado : 06/02/2015 11:16 am
Página 2 / 2